package cn.embeddedKey.method2;

import lombok.Data;

import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.Table;

/**
 * 联合主键法二：使用 @Embeddable + @EmbeddedId 注解
 * 不管法一还是法二，都需要定义一个主键类，因为对应的持久层接口 UserRepository 中形参2 为ID的类型，需要填 UserEntityPk
 * <p>
 * 注：推荐使用法二(即该方法)，因为两种方案都需要单独定义一个主键类，
 * 法一在定义主键类的情况下还需要在实体类(即本例中的UserEntity)中写入主键的属性
 * 而法二则不需要，更符合封装的思想，故感觉法二更优！
 */
@Entity
@Table(name = "k_user")
@Data
public class UserEntity2 {


    //    @AttributeOverrides(value = {
//            @AttributeOverride(name = "userName", column = @Column(name = "user_name")),
//            @AttributeOverride(name = "userPhone", column = @Column(name = "user_phnoe"))}
//    )
    @EmbeddedId
    private UserEntityID2 ids;


    @Column(name = "user_age")
    private Integer userAge;

    @Column(name = "user_address")
    private String userAddress;
}
